module.exports = () => {
  return async function errorHandler(ctx, next) {
    try {
      await next();
    } catch (err) {
      // 所有的异常都在 app 上触发一个 error 事件，框架会记录一条错误日志
      ctx.app.emit('error', err, ctx);

      const status = err.status;


      let code = err.status || 500;
      const msg = status === 500 && ctx.app.config.env === 'prod'
        ? 'Internal Server Error'
        : err.message;
      if (status === 401 && err.message === 'token已过期请重新登录') {
        code = 10001;
      }
      ctx.status = 200;
      ctx.body = ctx.helper.responseSucceed({ code, msg });
    }
  };
};
